home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
comm
/
dde_10.zip
/
DDE.C
next >
Wrap
Text File
|
1991-03-01
|
29KB
|
722 lines
/* Standard Library include files */
#include <search.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#include <memory.h>
#include <dos.h>
/* TCXL Library includes */
#include <tcxldef.h>
#include <tcxlsel.h>
#include <tcxlkey.h>
#include <tcxlwin.h>
#include <tcxlvid.h>
#include <tcxlkey.h>
#include <tcxlcod.h>
#include <tcxlmou.h>
/*
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓ ▓▓
▓▓ Structure for PROCOMM PLUS dialing directory entry. ▓▓
▓▓ ▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
from the hook.c file that comes with procomm plus 2.0
*/
typedef struct DDREC
{
char ddname[25], /* name */
ddphone[21]; /* phone number */
int ddbaud; /* baud rate as int */
char ddparity, /* parity as short int */
dddata, /* data bits as short int */
ddstop, /* stop bits as short int */
dddup, /* duplex as short int: 0 = full */
ddscript[9], /* ASPECT file w/o ext */
ddlast[9]; /* last call: mm/dd/yy */
int ddtotal; /* total connects */
char ddproto, /* default protocol as short int */
ddterm, /* terminal type as short int */
ddmode, /* 0 = mode, 1 = direct */
ddpassword[11], /* like it says */
ddmacfile[9], /* keyboard macro file */
ddkbdfile[9], /* keyboard mapping file */
ddport, /* com port to use */
ddnotefile[9]; /* note file */
} dd_entry;
#define DD_SIZE 200 /* size of the dialing directory with pcplus 2.0 */
/*
*
* Name: main()
*
* Useage: called from o/s
*
* Parameters: none
*
* Returns: exits with errorlevel set to 0 if no problems occur
*
* Function: main routine of PCPlus Dialing Directory Editor.
*
* Written by: David Gersic 27 Feb 1991
*
*/
void
main()
{
/* variables */
dd_entry *dial_dir, /* old and new dialing directories */
*dial_new;
char header[250], /* header in dialing directory file */
*in_file, /* input file name */
out_file[13]; /* output file name */
/* functions */
int read_ddir(char *, dd_entry *, char *),
write_ddir(char *, dd_entry *, char *),
modify_ddir(dd_entry *,dd_entry *);
char *get_in_file(void);
int get_out_file(char *);
TcxlInit(); /* initialize library */
VcurHid(0); /* turn off cursor */
Wopen(0,0,24,79,BOX_SPA,LGREY | _RED,LGREY | _RED); /* main window */
/* set up title and credits */
Wgotoxy(24,0);
Wputs(" David Gersic 17 Feb. 1991");
Wopen(0,0,23,79,BOX_HOR,LGREY | _RED,LGREY | _RED);
Wtitle(" ProcommPlus 2.0 Dialing Directory Editor v1.0 ",TTL_CNT,YELLOW|_RED);
while(in_file=get_in_file()) /* get input file name */
{ /* loop terminates when <esc> is pressed */
if((dial_dir=(dd_entry *)malloc((DD_SIZE)*sizeof(dd_entry))) == NULL)
{
fprintf(stderr,"Malloc failed.\nExiting to DOS.\n");
exit(1);
}
if((dial_new=(dd_entry *)malloc((DD_SIZE)*sizeof(dd_entry))) == NULL)
{
fprintf(stderr,"Malloc failed.\nExiting to DOS.\n");
exit(1);
}
read_ddir(in_file,dial_dir,header); /* read in dialing directory */
modify_ddir(dial_dir,dial_new); /* re-arrange directory */
Wclose(); /* close edit windows */
Wclose();
if(get_out_file(out_file)==0) /* get output file name */
write_ddir(out_file,dial_new,header); /* write out new dir */
free(dial_dir); /* free dynamic memory */
free(dial_new);
}
WcloseAll(); /* close all windows and exit */
VcurHid(1);
exit(0);
} /* end main() */
/*
*
* Name: read_ddir()
*
* Useage: read_ddir(char *dd_name, dd_entry *dial_dir, char *header)
*
* Parameters: char *dd_name filename of directory file to read in
* dd_entry *dial_dir where to put directory read in
* char *header where to store header
*
* Returns: 0
*
* Function: To read in a ProcommPlus 2.0 dialing directory file.
*
* Written by: David Gersic 27 Feb 1991
*
*/
int
read_ddir(char *dd_name, dd_entry *dial_dir, char *header)
{
FILE *dd_file;
int i=0;
dd_file=fopen(dd_name,"rb"); /* open file for input, no translation */
if(dd_file==NULL) /* file not open */
{
fprintf(stderr,"Error opening input file.\nExiting to DOS.\n");
exit(1);
}
fread(header,250,1,dd_file); /* read header */
while(i<DD_SIZE) /* read dialing directory entries */
{
if(fread((dial_dir+i),114,1,dd_file) != 1) /* one at a time */
{
if(ferror(dd_file)) /* error reading file */
perror("Error reading file.\n");
else
fprintf(stderr,"Unknown error reading file.\n");
fprintf(stderr,"Aborting!\n");
exit(1); /* abort to DOS */
}
i++;
}
fclose(dd_file);
return(0);
} /* end read_ddir() */
/*
*
* Name: write_ddir()
*
* Useage: write_ddir(char *dd_name, dd_entry *dial_dir, char *header)
*
* Parameters: char *dd_name filename to write out to
* dd_entry *dial_dir memory image of directory to write out
* char *header header saved by read_ddir()
*
* Returns: 0
*
* Function: To write out a ProcommPlus 2.0 dialing directory read in by
* read_ddir().
*
* Written by: David Gersic 27 Feb 1991
*
*/
int
write_ddir(char *dd_name, dd_entry *dial_dir, char *header)
{
FILE *out_file;
int i=0;
out_file=fopen(dd_name,"wb"); /* open file, no translation */
if(out_file==NULL) /* file not open */
{
fprintf(stderr,"Error opening output file.\nExiting to DOS.\n");
exit(1);
}
fwrite(header,250,1,out_file); /* write header */
while(i<DD_SIZE) /* write dialing directory entries */
{
if(fwrite((dial_dir+i),114,1,out_file) != 1) /* one at a time */
{
if(ferror(out_file)) /* error writing to file */
perror("Error writing file.\n");
else
fprintf(stderr,"Unknown error writing file.\n");
fprintf(stderr,"Aborting!\n");
exit(1); /* exit to o/s */
}
i++;
}
fclose(out_file);
return(0);
} /* end write_ddir() */
/*
*
* Name: get_in_file()
*
* Useage: get_in_file()
*
* Parameters: none
*
* Returns: pointer to the filename to be opened.
*
* Function: To get a filename from a pick-list. It passes the name back
* to the caller.
*
* Written by: David Gersic 27 Feb 1991
*
*/
char *
get_in_file()
{
char *file_name;
VOID CTYP AddShadow(NOARG); /* add drop-shadow to open window